package org.jsola.hr.web;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.jsola.core.Page;
import org.jsola.core.Result;
import org.jsola.hr.dto.BookingsBusinessAddDTO;
import org.jsola.hr.dto.BookingsBusinessUpdateDTO;
import org.jsola.hr.query.BookingsBusinessQuery;
import org.jsola.hr.vo.BookingsBusinessListVO;
import org.jsola.hr.vo.BookingsBusinessVO;

import java.util.List;

/**
 * 预约业务主表
 *
 * @author zhr
 */
@Api(tags = "hr-预约业务主表")
public interface IBookingsBusinessControllerAPI {

    /**
     * 新增预约业务主表
     * @param bookingsBusinessAddDTO 预约业务主表新增实体
     * @return 预约业务主表展示对象
     */
    @ApiOperation(value = "新增预约业务主表")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "bookingsBusinessAddDTO", dataType = "BookingsBusinessAddDTO", value = "新增预约业务主表", paramType = "body")
    })
    Result<BookingsBusinessVO> save(BookingsBusinessAddDTO bookingsBusinessAddDTO);


    /**
     * 修改预约业务主表
     * @param bookingsBusinessUpdateDTO 预约业务主表
     * @return 更新数量
     */
    @ApiOperation(value = "修改预约业务主表")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "bookingsBusinessUpdateDTO", dataType = "BookingsBusinessUpdateDTO", value = "修改预约业务主表", paramType = "body")
    })
    Result<Integer> update(BookingsBusinessUpdateDTO bookingsBusinessUpdateDTO);




    /**
     * 删除单个预约业务主表，彻底删除
     * @param bookingsBusinessId 预约业务主表id
     * @return 删除数量
     */
    @ApiOperation(value="删除单个预约业务主表，彻底删除")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "bookingsBusinessId", dataType = "Long", value = "预约业务主表id", paramType = "path")
    })
    Result<Integer> delete(Long bookingsBusinessId);


    /**
     * 批量删除预约业务主表，彻底删除
     * @param bookingsBusinessIds 预约业务主表id集合
     * @return 删除数量
     */
    @ApiOperation(value = "批量删除预约业务主表，彻底删除")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "bookingsBusinessIds", dataType = "Long[]", value = "预约业务主表id数组", paramType = "body" ,allowMultiple = true)
    })
    Result<Integer> deleteBatch(Long[] bookingsBusinessIds);


    /**
     * 根据预约业务主表id查询预约业务主表详情
     * @param bookingsBusinessId 预约业务主表id
     * @return 预约业务主表详情
     */
    @ApiOperation(value="根据预约业务主表id查询预约业务主表详情")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "bookingsBusinessId", dataType = "Long", value = "预约业务主表id", paramType = "path")
    })
    Result<BookingsBusinessVO> findById(Long bookingsBusinessId);


    /**
     * 查询预约业务主表
     * @param bookingsBusinessQuery 预约业务主表查询参数
     * @return page
     */
    @ApiOperation(value="查询预约业务主表")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "bookingsBusinessQuery", dataType = "BookingsBusinessQuery", value = "预约业务主表查询参数", paramType = "query")
    })
    Result<List<BookingsBusinessListVO>> listAll(BookingsBusinessQuery bookingsBusinessQuery);


     /**
     * 分页查询预约业务主表
     * @param bookingsBusinessQuery 预约业务主表查询参数
     * @return page
     */
    @ApiOperation(value="分页查询预约业务主表")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "bookingsBusinessQuery", dataType = "BookingsBusinessQuery", value = "预约业务主表查询参数", paramType = "query")
    })
    Result<Page<BookingsBusinessListVO>> page(BookingsBusinessQuery bookingsBusinessQuery);


}

